package utils

import (
	"github.com/whencome/xlog"
	"net/http"
	"time"
)

func StartLog() {
	// 设置日志输出类型
	// LogToFile - 输出到文件
	// LogToStdOut - 输出到标准输出
	// LogToStdErr - 输出到标准错误输出
	xlog.SetLogOutputType(xlog.LogToFile)
	// 设置日志等级，开发时可详尽记录日志，发布线上是修改此处的等级即可
	// 因此，此处的值建议放到配置文件中
	xlog.SetLogLevel(xlog.LogLevelDebug)
	// 设置flag，此处的内容与golang中的log包的相关设置相同
	// 注意此处的包是xlog，不是log
	xlog.SetLogFlags(xlog.Ldate | xlog.Ltime | xlog.Lmicroseconds | xlog.Llongfile)
	// 设置日志文件存储目录，仅当输出类型为 LogToFile 有效
	xlog.SetLogDir("./log")
	// 设置日志文件切割类型
	// xlog.SetLogCutType(xlog.CutByDate)
	// 设置日志文件名前缀，仅当输出类型为 LogToFile 有效
	xlog.SetLogFilePrefix("log_")
}

func ListenAndServe(addr string, g http.Handler) {
	s := &http.Server{
		Addr:           addr,
		Handler:        g,
		ReadTimeout:    10 * time.Second,
		WriteTimeout:   10 * time.Second,
		MaxHeaderBytes: 1 << 20,
	}
	err := s.ListenAndServe() // listen and serve
	if err != nil {
		xlog.Errorf("server_start_failure err:%v",err)
		panic(err)
	}
}